package entrata;

import classi.faLogin;
import classi.utente;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet utilizzata per salvare username e password su database,
 * fare login automaticamente e chiamare la funzione per inserire la foto
 * 
 * @author sestari
 */
public class registrazione extends HttpServlet {

    ServletContext sc;
    Connection con;

    /**
     * Controllo dei Cookies
     * @param request
     * @param response
     * @param user
     * @return 
     */
    public String cookies(HttpServletRequest request, HttpServletResponse response, utente user) {

        String data = "";
        try {

            //prende l'ultima data        
            Cookie[] cookies = request.getCookies();
            int len = cookies.length;
            for (int i = 0; i < len; i++) {
                Cookie c1 = cookies[i];
                if (c1.getName().equals("dataUltimoAcesso" + user.getId())) {
                    data = c1.getValue();
                }

            }

            //inserisce la data attuale
            faLogin fl = new faLogin();
            Cookie c = new Cookie("dataUltimoAcesso" + user.getId(), fl.getDateTime());
            c.setMaxAge(10000);
            response.addCookie(c);

            if (data.equalsIgnoreCase("")) {
                data = "Prima registrazione!";
            } else {
                data = "Ultimo accesso il: " + data;
            }

        } catch (Exception e) {
            System.out.print("cjfejifhasjhfa");
        }



        return data;
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    /**
     * Riceve username e password e li aggiorna su data base
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException 
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        sc = getServletContext();
        con = (Connection) sc.getAttribute("con");
        String user = request.getParameter("username");
        String pass = request.getParameter("password");
        Integer id = Integer.valueOf(request.getParameter("id"));

        ResultSet rs = null;
        //Verica se esiste un utente con quell'username
        String comand = "select id  from Persone where  username = \"" + user + "\"";

        Statement st;
        try {
            st = (Statement) con.createStatement();
            rs = (ResultSet) st.executeQuery(comand);
            if (rs.next()) {
                response.sendRedirect("registrarePaziente?msgerro=Username gia' essistente!");

            } else {
                insertPaziente(request, response, user, pass, id);
            }
        } catch (SQLException ex) {
            Logger.getLogger(faLogin.class.getName()).log(Level.SEVERE, null, ex);
        }






    }

    public void insertPaziente(HttpServletRequest request, HttpServletResponse response, String user, String pass, Integer id) {

        //Aggiorna il nuovo usermane e password 
        String comand = "UPDATE Persone SET username =?, password =? where id=?";
        PreparedStatement ps;
        try {
            ps = (PreparedStatement) con.prepareStatement(comand);

            ps.setString(1, user);
            ps.setString(2, pass);
            ps.setInt(3, id);

            ps.executeUpdate();

            faLogin fl = new faLogin(con);
            utente uten = fl.Login(request.getParameter("username"), request.getParameter("password"));
            if (uten != null) {
                HttpSession session = request.getSession();
                session.setAttribute("user", uten);
                session.setAttribute("Ultimoacesso", cookies(request, response, uten));

                try {
                    //va nell'altra servlet per inserire la foto
                    response.sendRedirect("insertfoto");
                } catch (IOException ex) {
                    Logger.getLogger(registrazione.class.getName()).log(Level.SEVERE, null, ex);
                }

            } else {
                try {
                    response.sendRedirect("index.html?msg=Non e' stato possibile registrarvi");
                } catch (IOException ex) {
                    Logger.getLogger(registrazione.class.getName()).log(Level.SEVERE, null, ex);
                }
            }



        } catch (SQLException ex) {
            Logger.getLogger(registrazione.class.getName()).log(Level.SEVERE, null, ex);
        }



    }
}
